package com.hao.cdk.sm.domain.dto.accountuser;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * @author: 许自豪
 * @date: 2025-01-24 15:04:11
 * @description: 用户(AccountUser)更新实体DTO
 */
@ApiModel("更新实体DTO")
@Data
@Accessors(chain = true)
public class AccountUserUpdateDTO implements Serializable {        
    private static final long serialVersionUID = 329608711321134422L;
    
    @ApiModelProperty(value = "数据ID", position = 2, required = true)
    @Size(max = 32, message = "数据ID不能超过32个字符！")
    @NotNull(message = "数据ID不能为空！")
    private String id;

    @ApiModelProperty(value = "用户名", position = 3)
    @Size(max = 50, message = "用户名不能超过50个字符！")
    private String username;

    @ApiModelProperty(value = "密码(密文)", position = 4)
    @Size(max = 64, message = "密码(密文)不能超过64个字符！")
    private String password;

    @ApiModelProperty(value = "昵称", position = 5)
    @Size(max = 50, message = "昵称不能超过50个字符！")
    private String nickname;

    @ApiModelProperty(value = "头像URL", position = 6)
    @Size(max = 255, message = "头像URL不能超过255个字符！")
    private String avatar;

    @ApiModelProperty(value = "手机号码(作默认用户名)", position = 7)
    @Size(max = 50, message = "手机号码(作默认用户名)不能超过50个字符！")
    private String phone;

    @ApiModelProperty(value = "电子邮箱", position = 8)
    @Size(max = 50, message = "电子邮箱不能超过50个字符！")
    private String email;

    @ApiModelProperty(value = "M(男) or F(女)", position = 9)
    @Size(max = 1, message = "M(男) or F(女)不能超过1个字符！")
    private String sex;

    @ApiModelProperty(value = "例如：2009-11-27", position = 10)
    @Size(max = 10, message = "例如：2009-11-27不能超过10个字符！")
    private String birthDate;

    @ApiModelProperty(value = "身份证(密文)", position = 11)
    @Size(max = 64, message = "身份证(密文)不能超过64个字符！")
    private String identificationCard;

    @ApiModelProperty(value = "用户积分", position = 12)
    private Integer score;

    @ApiModelProperty(value = "是否启用，1=启用，0=未启用", position = 13)
    private Integer enable;

    @ApiModelProperty(value = "简介", position = 14)
    @Size(max = 255, message = "简介不能超过255个字符！")
    private String description;

    @ApiModelProperty(value = "最后登录IP地址", position = 15)
    @Size(max = 50, message = "最后登录IP地址不能超过50个字符！")
    private String lastLoginIp;

    @ApiModelProperty(value = "最后登录时间", position = 16)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date gmtLastLogin;

    @ApiModelProperty(value = "数据创建时间", position = 17)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date gmtCreate;

    @ApiModelProperty(value = "数据最后修改时间", position = 18)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date gmtModified;

}
